diff options
4 files changed, 345 insertions, 0 deletions
diff --git a/debian/patches/0001-include-fix-the-embedded-type-definitions-in-memory_.patch b/debian/patches/0001-include-fix-the-embedded-type-definitions-in-memory_.patch new file mode 100644 index 0000000..9a32bb9 --- /dev/null +++ b/debian/patches/0001-include-fix-the-embedded-type-definitions-in-memory_.patch @@ -0,0 +1,69 @@ +From 3617701208c6fd63386442d2d107d37ff7d22041 Mon Sep 17 00:00:00 2001 +From: Justus Winter <4winter@informatik.uni-hamburg.de> +Date: Sun, 25 May 2014 15:53:23 +0200 +Subject: [PATCH 1/3] include: fix the embedded type definitions in + memory_object.defs + +In order to use MIG translation functions to lookup memory objects, +preprocessor macros have been introduced into the definition of +memory_object_t in 50cc5152. + +The procedure definitions contain inlined type definitions in order to +change the type of the argument in question (i.e. to make it +polymorphic). The inline definitions however lack the destructor +function, leading to reference leaks when a reference is acquired in +the intran function. + +* include/mach/memory_object.defs: Add the destructor functions to the +inlined type definitions. +--- + include/mach/memory_object.defs | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/include/mach/memory_object.defs b/include/mach/memory_object.defs +index 0ed8dbc..1ae36aa 100644 +--- a/include/mach/memory_object.defs ++++ b/include/mach/memory_object.defs +@@ -93,6 +93,9 @@ simpleroutine memory_object_terminate( + #ifdef MEMORY_OBJECT_INTRAN + intran: MEMORY_OBJECT_INTRAN + #endif ++#ifdef MEMORY_OBJECT_DESTRUCTOR ++ destructor: MEMORY_OBJECT_DESTRUCTOR ++#endif + ; + #if SEQNOS + msgseqno seqno : mach_port_seqno_t; +@@ -233,6 +236,9 @@ simpleroutine memory_object_lock_completed( + #ifdef MEMORY_OBJECT_INTRAN + intran: MEMORY_OBJECT_INTRAN + #endif ++#ifdef MEMORY_OBJECT_DESTRUCTOR ++ destructor: MEMORY_OBJECT_DESTRUCTOR ++#endif + ; + #if SEQNOS + msgseqno seqno : mach_port_seqno_t; +@@ -268,6 +274,9 @@ simpleroutine memory_object_supply_completed( + #ifdef MEMORY_OBJECT_INTRAN + intran: MEMORY_OBJECT_INTRAN + #endif ++#ifdef MEMORY_OBJECT_DESTRUCTOR ++ destructor: MEMORY_OBJECT_DESTRUCTOR ++#endif + ; + #if SEQNOS + msgseqno seqno : mach_port_seqno_t; +@@ -318,6 +327,9 @@ simpleroutine memory_object_change_completed( + #ifdef MEMORY_OBJECT_INTRAN + intran: MEMORY_OBJECT_INTRAN + #endif ++#ifdef MEMORY_OBJECT_DESTRUCTOR ++ destructor: MEMORY_OBJECT_DESTRUCTOR ++#endif + ; + #if SEQNOS + msgseqno seqno : mach_port_seqno_t; +-- +2.0.0.rc2 + diff --git a/debian/patches/0002-Rewrite-old-style-endif-FOO-directives.patch b/debian/patches/0002-Rewrite-old-style-endif-FOO-directives.patch new file mode 100644 index 0000000..d6ce7ce --- /dev/null +++ b/debian/patches/0002-Rewrite-old-style-endif-FOO-directives.patch @@ -0,0 +1,224 @@ +From 306d763d872bae2a1cc23fe13b769cace8198a3a Mon Sep 17 00:00:00 2001 +From: Justus Winter <4winter@informatik.uni-hamburg.de> +Date: Sun, 25 May 2014 16:19:16 +0200 +Subject: [PATCH 2/3] Rewrite old-style #endif FOO directives + +* i386/include/mach/i386/cthreads.h: Rewrite old-style #endif FOO +directives. +* include/device/tape_status.h: Likewise. +* include/mach/alert.h: Likewise. +* include/mach/boot.h: Likewise. +* include/mach/default_pager_types.defs: Likewise. +* include/mach/default_pager_types.h: Likewise. +* include/mach/multiboot.h: Likewise. +* include/mach/notify.defs: Likewise. +* include/mach_debug/pc_info.h: Likewise. +* kern/act.h: Likewise. +* kern/refcount.h: Likewise. +* kern/shuttle.h: Likewise. +--- + i386/include/mach/i386/cthreads.h | 2 +- + include/device/tape_status.h | 2 +- + include/mach/alert.h | 2 +- + include/mach/boot.h | 4 ++-- + include/mach/default_pager_types.defs | 2 +- + include/mach/default_pager_types.h | 2 +- + include/mach/multiboot.h | 2 +- + include/mach/notify.defs | 16 ++++++++-------- + include/mach_debug/pc_info.h | 2 +- + kern/act.h | 2 +- + kern/refcount.h | 2 +- + kern/shuttle.h | 2 +- + 12 files changed, 20 insertions(+), 20 deletions(-) + +diff --git a/i386/include/mach/i386/cthreads.h b/i386/include/mach/i386/cthreads.h +index f9755b4..d2aa16f 100644 +--- a/i386/include/mach/i386/cthreads.h ++++ b/i386/include/mach/i386/cthreads.h +@@ -53,4 +53,4 @@ typedef volatile int spin_lock_t; + + #endif /* __GNUC__ */ + +-#endif _MACHINE_CTHREADS_H_ ++#endif /* _MACHINE_CTHREADS_H_ */ +diff --git a/include/device/tape_status.h b/include/device/tape_status.h +index 97cb098..603d76c 100644 +--- a/include/device/tape_status.h ++++ b/include/device/tape_status.h +@@ -137,4 +137,4 @@ struct mtget { + #define MTIOCEEOT _IO('m', 4) /* enable EOT error */ + + +-#endif _TAPE_STATUS_H_ ++#endif /* _TAPE_STATUS_H_ */ +diff --git a/include/mach/alert.h b/include/mach/alert.h +index 8232f9e..e8eb371 100644 +--- a/include/mach/alert.h ++++ b/include/mach/alert.h +@@ -34,4 +34,4 @@ + + #define ALERT_USER 0xffff0000 /* User-defined alert bits */ + +-#endif _MACH_ALERT_H_ ++#endif /* _MACH_ALERT_H_ */ +diff --git a/include/mach/boot.h b/include/mach/boot.h +index d3e141f..7f14cc4 100644 +--- a/include/mach/boot.h ++++ b/include/mach/boot.h +@@ -65,7 +65,7 @@ struct boot_rendezvous + int code; + }; + +-#endif !__ASSEMBLER__ ++#endif /* !__ASSEMBLER__ */ + + + /* This is the magic value that must appear in boot_module.magic. */ +@@ -90,4 +90,4 @@ struct boot_rendezvous + #define BRZV_DATA 'D' + + +-#endif _MACH_BOOT_ ++#endif /* _MACH_BOOT_ */ +diff --git a/include/mach/default_pager_types.defs b/include/mach/default_pager_types.defs +index 3164f04..bee7c25 100644 +--- a/include/mach/default_pager_types.defs ++++ b/include/mach/default_pager_types.defs +@@ -41,4 +41,4 @@ type default_pager_filename_t = (MACH_MSG_TYPE_STRING_C, 8*256); + + import <mach/default_pager_types.h>; + +-#endif _MACH_DEFAULT_PAGER_TYPES_DEFS_ ++#endif /* _MACH_DEFAULT_PAGER_TYPES_DEFS_ */ +diff --git a/include/mach/default_pager_types.h b/include/mach/default_pager_types.h +index 99e43ce..f5ce5a4 100644 +--- a/include/mach/default_pager_types.h ++++ b/include/mach/default_pager_types.h +@@ -55,4 +55,4 @@ typedef default_pager_page_t *default_pager_page_array_t; + + typedef char default_pager_filename_t[256]; + +-#endif _MACH_DEFAULT_PAGER_TYPES_H_ ++#endif /* _MACH_DEFAULT_PAGER_TYPES_H_ */ +diff --git a/include/mach/multiboot.h b/include/mach/multiboot.h +index 3880fa8..b23df4a 100644 +--- a/include/mach/multiboot.h ++++ b/include/mach/multiboot.h +@@ -79,4 +79,4 @@ struct multiboot_info + natural_t pad[4]; + }; + +-#endif _MACH_MULTIBOOT_H_ ++#endif /* _MACH_MULTIBOOT_H_ */ +diff --git a/include/mach/notify.defs b/include/mach/notify.defs +index fdf35e9..5e59d39 100644 +--- a/include/mach/notify.defs ++++ b/include/mach/notify.defs +@@ -35,10 +35,10 @@ NOTIFY_IMPORTS + #if SEQNOS + serverprefix do_seqnos_; + serverdemux seqnos_notify_server; +-#else SEQNOS ++#else + serverprefix do_; + serverdemux notify_server; +-#endif SEQNOS ++#endif + + type notify_port_t = MACH_MSG_TYPE_MOVE_SEND_ONCE + ctype: mach_port_t +@@ -61,7 +61,7 @@ simpleroutine mach_notify_port_deleted( + notify : notify_port_t; + #if SEQNOS + msgseqno seqno : mach_port_seqno_t; +-#endif SEQNOS ++#endif + name : mach_port_name_t); + + /* MACH_NOTIFY_MSG_ACCEPTED: 0102 */ +@@ -69,7 +69,7 @@ simpleroutine mach_notify_msg_accepted( + notify : notify_port_t; + #if SEQNOS + msgseqno seqno : mach_port_seqno_t; +-#endif SEQNOS ++#endif + name : mach_port_name_t); + + skip; /* was NOTIFY_OWNERSHIP_RIGHTS: 0103 */ +@@ -81,7 +81,7 @@ simpleroutine mach_notify_port_destroyed( + notify : notify_port_t; + #if SEQNOS + msgseqno seqno : mach_port_seqno_t; +-#endif SEQNOS ++#endif + rights : mach_port_receive_t); + + /* MACH_NOTIFY_NO_SENDERS: 0106 */ +@@ -89,7 +89,7 @@ simpleroutine mach_notify_no_senders( + notify : notify_port_t; + #if SEQNOS + msgseqno seqno : mach_port_seqno_t; +-#endif SEQNOS ++#endif + mscount : mach_port_mscount_t); + + /* MACH_NOTIFY_SEND_ONCE: 0107 */ +@@ -97,7 +97,7 @@ simpleroutine mach_notify_send_once( + notify : notify_port_t + #if SEQNOS + ; msgseqno seqno : mach_port_seqno_t +-#endif SEQNOS ++#endif + ); + + /* MACH_NOTIFY_DEAD_NAME: 0110 */ +@@ -105,5 +105,5 @@ simpleroutine mach_notify_dead_name( + notify : notify_port_t; + #if SEQNOS + msgseqno seqno : mach_port_seqno_t; +-#endif SEQNOS ++#endif + name : mach_port_name_t); +diff --git a/include/mach_debug/pc_info.h b/include/mach_debug/pc_info.h +index bc43fa8..912da9f 100644 +--- a/include/mach_debug/pc_info.h ++++ b/include/mach_debug/pc_info.h +@@ -40,4 +40,4 @@ typedef struct sampled_pc { + typedef sampled_pc_t *sampled_pc_array_t; + typedef unsigned int sampled_pc_seqno_t; + +-#endif _MACH_DEBUG_PC_INFO_H_ ++#endif /* _MACH_DEBUG_PC_INFO_H_ */ +diff --git a/kern/act.h b/kern/act.h +index 6d3a9a9..f46f53a 100644 +--- a/kern/act.h ++++ b/kern/act.h +@@ -189,4 +189,4 @@ kern_return_t act_machine_get_state(Act *inc, int flavor, int *tstate, unsigned + + + #endif /* MIGRATING_THREADS */ +-#endif _KERN_ACT_H_ ++#endif /* _KERN_ACT_H_ */ +diff --git a/kern/refcount.h b/kern/refcount.h +index 01dc6b5..74204d6 100644 +--- a/kern/refcount.h ++++ b/kern/refcount.h +@@ -65,4 +65,4 @@ typedef struct RefCount RefCount; + + #endif /* MACHINE_REFCOUNT */ + +-#endif _KERN_REFCOUNT_H_ ++#endif /* _KERN_REFCOUNT_H_ */ +diff --git a/kern/shuttle.h b/kern/shuttle.h +index e8e574b..0b1c2c5 100644 +--- a/kern/shuttle.h ++++ b/kern/shuttle.h +@@ -68,4 +68,4 @@ typedef struct Shuttle Shuttle; + + + +-#endif _KERN_SHUTTLE_H_ ++#endif /* _KERN_SHUTTLE_H_ */ +-- +2.0.0.rc2 + diff --git a/debian/patches/0003-Include-the-notify-protocol-in-gnumach.msgids.patch b/debian/patches/0003-Include-the-notify-protocol-in-gnumach.msgids.patch new file mode 100644 index 0000000..92770bd --- /dev/null +++ b/debian/patches/0003-Include-the-notify-protocol-in-gnumach.msgids.patch @@ -0,0 +1,49 @@ +From e8522c16db449dbc8859163a35b3ec7143ef7ba2 Mon Sep 17 00:00:00 2001 +From: Justus Winter <4winter@informatik.uni-hamburg.de> +Date: Sun, 25 May 2014 16:26:42 +0200 +Subject: [PATCH 3/3] Include the notify protocol in gnumach.msgids + +* Makefrag.am (gnumach.msgids): Add notify.msgids as prerequisite. +* Makerules.mig.am: Add rule to generate the list of message ids when +neither the client nor the server stubs are required. +--- + Makefrag.am | 3 ++- + Makerules.mig.am | 8 ++++++++ + 2 files changed, 10 insertions(+), 1 deletion(-) + +diff --git a/Makefrag.am b/Makefrag.am +index d6dd77f..2c25dd2 100644 +--- a/Makefrag.am ++++ b/Makefrag.am +@@ -537,7 +537,8 @@ nodist_libkernel_a_SOURCES += \ + # rpctrace can make use of that. + MOSTLYCLEANFILES += \ + gnumach.msgids +-gnumach.msgids: $(filter %.msgids,$(nodist_libkernel_a_SOURCES)) ++gnumach.msgids: $(filter %.msgids,$(nodist_libkernel_a_SOURCES)) \ ++ include/mach/notify.msgids + $(AM_V_at) cat $^ > $@.new + $(AM_V_GEN) mv $@.new $@ + # `exec_' prefix, so that we don't try to build that file during when running +diff --git a/Makerules.mig.am b/Makerules.mig.am +index 3060984..1612e1c 100644 +--- a/Makerules.mig.am ++++ b/Makerules.mig.am +@@ -88,6 +88,14 @@ lib_dep_tr_for_defs_a_CPPFLAGS = $(AM_CPPFLAGS) \ + -list $*.user.msgids \ + < $< + ++# Stand-alone rule to generate the list of message ids when neither ++# the client nor the server stubs are required. ++%.msgids: $(top_srcdir)/%.defs ++ $(MIGCOM_V) $(CPP) $(AM_CPPFLAGS) $(CPPFLAGS) -E $< \ ++ | $(MIGCOM) $(MIGCOMFLAGS) $(MIGCOMSFLAGS) \ ++ -sheader /dev/null -server /dev/null \ ++ -list "$@" ++ + # This is how it should be done, but this is not integrated into GNU Automake + # and is missing automatic inter-file dependency management because of that. + +-- +2.0.0.rc2 + diff --git a/debian/patches/series b/debian/patches/series index 342ddab..8376306 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -7,3 +7,6 @@ protected_payload.patch Add-some-padding-to-make-objects-fit-a-single-cache-.patch #acpihalt.patch +0001-include-fix-the-embedded-type-definitions-in-memory_.patch +0002-Rewrite-old-style-endif-FOO-directives.patch +0003-Include-the-notify-protocol-in-gnumach.msgids.patch |