[m-rev.] for review: granularity control
Zoltan Somogyi
zs at csse.unimelb.edu.au
Fri Nov 3 19:06:55 AEDT 2006
On 03-Nov-2006, Zoltan Somogyi <zs at csse.unimelb.edu.au> wrote:
> I am doing an asm_fast.gc.par
> bootcheck of an unmodified workspace now to see whether it is related to my
> change.
The unmodified workspace also crashes on all tests, so I am committing this
change.
With lmc, the output of ldd on the executable is
linux-gate.so.1 => (0xffffe000)
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb7f71000)
libnsl.so.1 => /lib/tls/i686/cmov/libnsl.so.1 (0xb7f5c000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7f58000)
libreadline.so.5 => /lib/libreadline.so.5 (0xb7f2a000)
libncurses.so.5 => /lib/libncurses.so.5 (0xb7ee9000)
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7ed7000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7da8000)
/lib/ld-linux.so.2 (0xb7fa6000)
For the executables created by bootcheck, ldd says they are not dynamic
executable; the file command also says they are statically linked.
The linking command invoked by bootcheck is
/home/zs/mer/ws32/stage2/scripts/ml --grade asm_fast.gc.par --no-mercury-stdlib-dir --trace-init-file /home/zs/mer/ws32/stage2/browser/mer_browser.init --trace-init-file /home/zs/mer/ws32/stage2/mdbcomp/mer_mdbcomp.init -- -o deriv2 deriv2_init.o \ deriv2.o \
/home/zs/mer/ws32/stage2/trace/libmer_trace.a /home/zs/mer/ws32/stage2/browser/libmer_browser.a /home/zs/mer/ws32/stage2/mdbcomp/libmer_mdbcomp.a /home/zs/mer/ws32/stage2/library/libmer_std.a /home/zs/mer/ws32/stage2/runtime/libmer_rt.a /home/zs/mer/ws32/stage2/boehm_gc/libpar_gc.a
The runtime library has a definition for MR_thread_engine_base. The nm output
reads:
00000000 B MR_thread_engine_base
This shows that the symbol is the BSS section, and the symbol value is zero.
The last part is worrying, because mercury_thread.o, the module that defines
MR_thread_engine_base, has another variable (MR_debug_threads) that is also
shown as having section BSS symbol value 0. They cannot both be stored at
the same offset in mercury_thread.o's bss section. Of course,
MR_thread_engine_base is thread local while MR_debug_threads isn't,
but nm doesn't show that. objdump does, but I am not sure I know what
its output is telling me, since the man page doesn't say. I am attaching
the output in case anyone knows.
Does any of this ring a bell, Peter?
Zoltan.
-------------- next part --------------
mercury_thread.o: file format elf32-i386
SYMBOL TABLE:
00000000 l df *ABS* 00000000 mercury_thread.c
00000000 l d .text 00000000 .text
00000000 l d .data 00000000 .data
00000000 l d .bss 00000000 .bss
00000000 l d .debug_abbrev 00000000 .debug_abbrev
00000000 l d .debug_info 00000000 .debug_info
00000000 l d .debug_line 00000000 .debug_line
00000000 l d .rodata 00000000 .rodata
00000000 l O .rodata 00000011 __PRETTY_FUNCTION__.4
00000000 l d .rodata.str1.1 00000000 .rodata.str1.1
00000000 l d .rodata.str1.4 00000000 .rodata.str1.4
000001f7 l F .text 00000038 MR_create_thread_2
00000011 l O .rodata 0000000e __PRETTY_FUNCTION__.3
0000001f l O .rodata 00000010 __PRETTY_FUNCTION__.2
0000002f l O .rodata 0000000f __PRETTY_FUNCTION__.1
0000003e l O .rodata 0000000d __PRETTY_FUNCTION__.0
00000000 l d .tbss 00000000 .tbss
00000000 l d .debug_frame 00000000 .debug_frame
00000000 l d .debug_pubnames 00000000 .debug_pubnames
00000000 l d .debug_aranges 00000000 .debug_aranges
00000000 l d .debug_str 00000000 .debug_str
00000000 l d .note.GNU-stack 00000000 .note.GNU-stack
00000000 l d .comment 00000000 .comment
00000000 g O .bss 00000004 MR_debug_threads
00000000 g F .text 00000083 MR_create_thread
00000004 O *COM* 00000004 MR_primordial_thread
00000000 *UND* 00000000 MR_GC_malloc
00000000 *UND* 00000000 pthread_attr_init
00000000 *UND* 00000000 GC_pthread_create
00000000 *UND* 00000000 __assert_fail
00000000 *UND* 00000000 MR_fatal_error
00000083 g F .text 00000174 MR_init_thread
00000000 *UND* 00000000 _GLOBAL_OFFSET_TABLE_
00000000 g .tbss 00000004 MR_thread_engine_base
00000000 *UND* 00000000 MR_create_engine
00000000 *UND* 00000000 MR_sol_hp_var
00000000 *UND* 00000000 MR_min_hp_rec_var
00000000 *UND* 00000000 MR_min_sol_hp_rec_var
00000000 *UND* 00000000 MR_global_hp_var
00000000 *UND* 00000000 pthread_self
00000000 *UND* 00000000 _entry_MR_do_runnext
00000000 *UND* 00000000 MR_call_engine
00000000 *UND* 00000000 MR_destroy_engine
00000000 *UND* 00000000 MR_create_context
0000022f g F .text 00000021 MR_finalize_thread_engine
00000000 *UND* 00000000 MR_finalize_engine
00000250 g F .text 0000001d MR_destroy_thread
00000000 *UND* 00000000 pthread_exit
0000026d g F .text 00000067 MR_mutex_lock
00000000 *UND* 00000000 stderr
00000000 *UND* 00000000 fprintf
00000000 *UND* 00000000 pthread_mutex_lock
000002d4 g F .text 00000067 MR_mutex_unlock
00000000 *UND* 00000000 pthread_mutex_unlock
0000033b g F .text 00000060 MR_cond_signal
00000000 *UND* 00000000 pthread_cond_broadcast
0000039b g F .text 0000006e MR_cond_wait
00000000 *UND* 00000000 pthread_cond_wait
00000004 O *COM* 00000004 MR_exit_now
00000018 O *COM* 00000004 MR_global_lock
00000004 O *COM* 00000004 MR_exception_handler_key
RELOCATION RECORDS FOR [.text]:
OFFSET TYPE VALUE
00000007 R_386_32 MR_primordial_thread
00000017 R_386_PC32 MR_GC_malloc
00000025 R_386_PC32 pthread_attr_init
00000037 R_386_32 .text
00000046 R_386_PC32 GC_pthread_create
00000057 R_386_32 .rodata
00000067 R_386_32 .rodata.str1.1
0000006e R_386_32 .rodata.str1.4
00000073 R_386_PC32 __assert_fail
0000007a R_386_32 .rodata.str1.1
0000007f R_386_PC32 MR_fatal_error
0000008e R_386_TLS_LE MR_thread_engine_base
00000099 R_386_PC32 MR_create_engine
000000a4 R_386_TLS_LE MR_thread_engine_base
000000b7 R_386_32 MR_sol_hp_var
000000c2 R_386_32 MR_min_hp_rec_var
000000cd R_386_32 MR_min_sol_hp_rec_var
000000d8 R_386_32 MR_global_hp_var
000000ec R_386_PC32 pthread_self
00000112 R_386_32 _entry_MR_do_runnext
00000117 R_386_PC32 MR_call_engine
00000122 R_386_PC32 MR_destroy_engine
00000186 R_386_32 MR_sol_hp_var
00000191 R_386_32 MR_min_hp_rec_var
0000019c R_386_32 MR_min_sol_hp_rec_var
000001a7 R_386_32 MR_global_hp_var
000001d7 R_386_32 .rodata.str1.1
000001dc R_386_PC32 MR_create_context
000001ee R_386_32 .rodata.str1.4
000001f3 R_386_PC32 MR_fatal_error
0000020c R_386_PC32 MR_init_thread
00000227 R_386_PC32 MR_init_thread
00000237 R_386_TLS_LE MR_thread_engine_base
0000023e R_386_TLS_LE MR_thread_engine_base
0000024a R_386_PC32 MR_finalize_engine
0000025d R_386_PC32 MR_destroy_engine
00000269 R_386_PC32 pthread_exit
00000274 R_386_PC32 pthread_self
0000027f R_386_32 .rodata.str1.1
0000028f R_386_32 stderr
0000029b R_386_PC32 fprintf
000002a6 R_386_PC32 pthread_mutex_lock
000002b4 R_386_32 .rodata
000002c4 R_386_32 .rodata.str1.1
000002cb R_386_32 .rodata.str1.1
000002d0 R_386_PC32 __assert_fail
000002db R_386_PC32 pthread_self
000002e6 R_386_32 .rodata.str1.1
000002f6 R_386_32 stderr
00000302 R_386_PC32 fprintf
0000030d R_386_PC32 pthread_mutex_unlock
0000031b R_386_32 .rodata
0000032b R_386_32 .rodata.str1.1
00000332 R_386_32 .rodata.str1.1
00000337 R_386_PC32 __assert_fail
00000342 R_386_PC32 pthread_self
0000034d R_386_32 .rodata.str1.1
00000356 R_386_32 stderr
00000362 R_386_PC32 fprintf
0000036d R_386_PC32 pthread_cond_broadcast
0000037b R_386_32 .rodata
0000038b R_386_32 .rodata.str1.1
00000392 R_386_32 .rodata.str1.1
00000397 R_386_PC32 __assert_fail
000003a2 R_386_PC32 pthread_self
000003ad R_386_32 .rodata.str1.1
000003bd R_386_32 stderr
000003c9 R_386_PC32 fprintf
000003db R_386_PC32 pthread_cond_wait
000003e9 R_386_32 .rodata
000003f9 R_386_32 .rodata.str1.1
00000400 R_386_32 .rodata.str1.1
00000405 R_386_PC32 __assert_fail
RELOCATION RECORDS FOR [.debug_info]:
OFFSET TYPE VALUE
00000006 R_386_32 .debug_abbrev
0000000c R_386_32 .debug_line
00000010 R_386_32 .text
00000014 R_386_32 .text
00000018 R_386_32 .debug_str
0000001d R_386_32 .debug_str
00000021 R_386_32 .debug_str
00000026 R_386_32 .debug_str
00000031 R_386_32 .debug_str
0000003f R_386_32 .debug_str
00000046 R_386_32 .debug_str
0000004d R_386_32 .debug_str
00000054 R_386_32 .debug_str
0000005b R_386_32 .debug_str
00000062 R_386_32 .debug_str
00000069 R_386_32 .debug_str
00000074 R_386_32 .debug_str
00000081 R_386_32 .debug_str
00000088 R_386_32 .debug_str
0000008f R_386_32 .debug_str
0000009c R_386_32 .debug_str
000000a7 R_386_32 .debug_str
000000b9 R_386_32 .debug_str
000000c0 R_386_32 .debug_str
000000cb R_386_32 .debug_str
000000d6 R_386_32 .debug_str
000000ef R_386_32 .debug_str
0000010e R_386_32 .debug_str
0000011d R_386_32 .debug_str
00000125 R_386_32 .debug_str
00000134 R_386_32 .debug_str
00000143 R_386_32 .debug_str
0000014b R_386_32 .debug_str
00000159 R_386_32 .debug_str
00000168 R_386_32 .debug_str
00000179 R_386_32 .debug_str
00000183 R_386_32 .debug_str
0000018b R_386_32 .debug_str
00000199 R_386_32 .debug_str
000001a7 R_386_32 .debug_str
000001b5 R_386_32 .debug_str
000001c3 R_386_32 .debug_str
000001d1 R_386_32 .debug_str
000001df R_386_32 .debug_str
000001ed R_386_32 .debug_str
000001fb R_386_32 .debug_str
0000020c R_386_32 .debug_str
00000217 R_386_32 .debug_str
0000022a R_386_32 .debug_str
00000238 R_386_32 .debug_str
00000246 R_386_32 .debug_str
00000254 R_386_32 .debug_str
00000273 R_386_32 .debug_str
0000027e R_386_32 .debug_str
00000291 R_386_32 .debug_str
0000029f R_386_32 .debug_str
000002ad R_386_32 .debug_str
000002bb R_386_32 .debug_str
000002c9 R_386_32 .debug_str
000002d8 R_386_32 .debug_str
000002e3 R_386_32 .debug_str
000002ee R_386_32 .debug_str
000002fd R_386_32 .debug_str
00000305 R_386_32 .debug_str
00000314 R_386_32 .debug_str
00000323 R_386_32 .debug_str
00000332 R_386_32 .debug_str
00000341 R_386_32 .debug_str
00000350 R_386_32 .debug_str
0000035f R_386_32 .debug_str
0000036e R_386_32 .debug_str
0000037d R_386_32 .debug_str
0000038c R_386_32 .debug_str
0000039b R_386_32 .debug_str
000003aa R_386_32 .debug_str
000003b9 R_386_32 .debug_str
000003c8 R_386_32 .debug_str
000003d7 R_386_32 .debug_str
000003e6 R_386_32 .debug_str
000003f5 R_386_32 .debug_str
00000404 R_386_32 .debug_str
00000413 R_386_32 .debug_str
00000422 R_386_32 .debug_str
00000431 R_386_32 .debug_str
00000440 R_386_32 .debug_str
0000044f R_386_32 .debug_str
0000045e R_386_32 .debug_str
0000046d R_386_32 .debug_str
0000047c R_386_32 .debug_str
0000049e R_386_32 .debug_str
000004a9 R_386_32 .debug_str
000004b1 R_386_32 .debug_str
000004bf R_386_32 .debug_str
000004cd R_386_32 .debug_str
0000050e R_386_32 .debug_str
0000051d R_386_32 .debug_str
00000525 R_386_32 .debug_str
00000533 R_386_32 .debug_str
00000541 R_386_32 .debug_str
0000054f R_386_32 .debug_str
0000055d R_386_32 .debug_str
0000056b R_386_32 .debug_str
00000579 R_386_32 .debug_str
00000587 R_386_32 .debug_str
00000595 R_386_32 .debug_str
000005a3 R_386_32 .debug_str
000005b1 R_386_32 .debug_str
000005bf R_386_32 .debug_str
000005cd R_386_32 .debug_str
000005dc R_386_32 .debug_str
0000060d R_386_32 .debug_str
00000618 R_386_32 .debug_str
00000623 R_386_32 .debug_str
0000062e R_386_32 .debug_str
00000641 R_386_32 .debug_str
0000065e R_386_32 .debug_str
00000671 R_386_32 .debug_str
00000677 R_386_32 .debug_str
0000067e R_386_32 .debug_str
00000689 R_386_32 .debug_str
00000698 R_386_32 .debug_str
000006a0 R_386_32 .debug_str
000006ae R_386_32 .debug_str
000006bc R_386_32 .debug_str
000006ca R_386_32 .debug_str
000006d8 R_386_32 .debug_str
000006e6 R_386_32 .debug_str
000006f4 R_386_32 .debug_str
00000702 R_386_32 .debug_str
00000710 R_386_32 .debug_str
0000071e R_386_32 .debug_str
0000072c R_386_32 .debug_str
0000073a R_386_32 .debug_str
00000748 R_386_32 .debug_str
00000756 R_386_32 .debug_str
00000764 R_386_32 .debug_str
00000773 R_386_32 .debug_str
00000782 R_386_32 .debug_str
0000078a R_386_32 .debug_str
00000798 R_386_32 .debug_str
000007a6 R_386_32 .debug_str
000007bd R_386_32 .debug_str
000007c3 R_386_32 .debug_str
000007ca R_386_32 .debug_str
000007d5 R_386_32 .debug_str
000007e4 R_386_32 .debug_str
000007ec R_386_32 .debug_str
000007fa R_386_32 .debug_str
0000081b R_386_32 .debug_str
0000083a R_386_32 .debug_str
00000842 R_386_32 .debug_str
00000850 R_386_32 .debug_str
0000085e R_386_32 .debug_str
0000086d R_386_32 .debug_str
00000892 R_386_32 .debug_str
0000089b R_386_32 .debug_str
000008aa R_386_32 .debug_str
000008c0 R_386_32 .debug_str
000008d0 R_386_32 .debug_str
000008da R_386_32 .debug_str
000008e9 R_386_32 .debug_str
000008f9 R_386_32 .debug_str
00000909 R_386_32 .debug_str
00000919 R_386_32 .debug_str
00000929 R_386_32 .debug_str
00000939 R_386_32 .debug_str
00000949 R_386_32 .debug_str
00000959 R_386_32 .debug_str
00000981 R_386_32 .debug_str
00000992 R_386_32 .debug_str
0000099d R_386_32 .text
000009a1 R_386_32 .text
000009a8 R_386_32 .debug_str
000009b5 R_386_32 .debug_str
000009c3 R_386_32 .debug_str
000009de R_386_32 .debug_str
000009e9 R_386_32 .rodata
00000a15 R_386_32 .debug_str
00000a20 R_386_32 .text
00000a24 R_386_32 .text
00000a2b R_386_32 .debug_str
00000a47 R_386_32 .text
00000a4b R_386_32 .text
00000a50 R_386_32 .debug_str
00000a69 R_386_32 .debug_str
00000a74 R_386_32 .text
00000a78 R_386_32 .text
00000a7f R_386_32 .debug_str
00000a8d R_386_32 .debug_str
00000a9e R_386_32 .debug_str
00000aa5 R_386_32 .text
00000aa9 R_386_32 .text
00000ac3 R_386_32 .debug_str
00000aca R_386_32 .text
00000ace R_386_32 .text
00000ad5 R_386_32 .debug_str
00000af3 R_386_32 .debug_str
00000afa R_386_32 .text
00000afe R_386_32 .text
00000b05 R_386_32 .debug_str
00000b13 R_386_32 .debug_str
00000b2d R_386_32 .debug_str
00000b38 R_386_32 .rodata
00000b5e R_386_32 .debug_str
00000b65 R_386_32 .text
00000b69 R_386_32 .text
00000b70 R_386_32 .debug_str
00000b7e R_386_32 .debug_str
00000b98 R_386_32 .debug_str
00000ba3 R_386_32 .rodata
00000bc3 R_386_32 .debug_str
00000bca R_386_32 .text
00000bce R_386_32 .text
00000bd5 R_386_32 .debug_str
00000bf0 R_386_32 .debug_str
00000bfb R_386_32 .rodata
00000c21 R_386_32 .debug_str
00000c28 R_386_32 .text
00000c2c R_386_32 .text
00000c33 R_386_32 .debug_str
00000c41 R_386_32 .debug_str
00000c5c R_386_32 .debug_str
00000c67 R_386_32 .rodata
00000c82 R_386_32 .debug_str
00000c8f R_386_32 .debug_str
00000c9c R_386_32 .debug_str
00000ca9 R_386_32 .debug_str
00000cb7 R_386_32 .debug_str
00000cc5 R_386_32 .debug_str
00000cd3 R_386_32 .debug_str
00000ce1 R_386_32 .debug_str
00000cee R_386_32 .debug_str
00000cfb R_386_32 .debug_str
00000d08 R_386_32 .debug_str
00000d15 R_386_32 MR_debug_threads
00000d1a R_386_32 .debug_str
00000d27 R_386_32 MR_exit_now
00000d2c R_386_32 .debug_str
00000d39 R_386_32 MR_primordial_thread
00000d3e R_386_32 .debug_str
00000d4b R_386_32 MR_global_lock
00000d50 R_386_32 .debug_str
00000d5d R_386_32 MR_exception_handler_key
00000d62 R_386_32 .debug_str
00000d6f R_386_TLS_LDO_32 MR_thread_engine_base
RELOCATION RECORDS FOR [.debug_line]:
OFFSET TYPE VALUE
00000190 R_386_32 .text
RELOCATION RECORDS FOR [.debug_frame]:
OFFSET TYPE VALUE
00000018 R_386_32 .debug_frame
0000001c R_386_32 .text
00000030 R_386_32 .debug_frame
00000034 R_386_32 .text
00000048 R_386_32 .debug_frame
0000004c R_386_32 .text
00000060 R_386_32 .debug_frame
00000064 R_386_32 .text
00000078 R_386_32 .debug_frame
0000007c R_386_32 .text
00000090 R_386_32 .debug_frame
00000094 R_386_32 .text
000000a8 R_386_32 .debug_frame
000000ac R_386_32 .text
000000c0 R_386_32 .debug_frame
000000c4 R_386_32 .text
000000d8 R_386_32 .debug_frame
000000dc R_386_32 .text
RELOCATION RECORDS FOR [.debug_pubnames]:
OFFSET TYPE VALUE
00000006 R_386_32 .debug_info
RELOCATION RECORDS FOR [.debug_aranges]:
OFFSET TYPE VALUE
00000006 R_386_32 .debug_info
00000010 R_386_32 .text
More information about the reviews
mailing list