diff options
author | Nick Clifton <nickc@redhat.com> | 2004-09-30 17:19:19 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2004-09-30 17:19:19 +0000 |
commit | db8acf26ca5d066a8cb97b8a80590886cfd04b77 (patch) | |
tree | 5250d0ac6cde35d4465b1e9c9f5e215bc0103237 | |
parent | 9fe0b840a939461c776528aa63315f4228688ce3 (diff) | |
download | gdb-db8acf26ca5d066a8cb97b8a80590886cfd04b77.zip gdb-db8acf26ca5d066a8cb97b8a80590886cfd04b77.tar.gz gdb-db8acf26ca5d066a8cb97b8a80590886cfd04b77.tar.bz2 |
emultempl/pe.em (gld_${EMULATION_NAME}_set_symbols): Generate correct base
address for position independant executables.
pe-dll.c (pe_dll_fill_sections): Don't mark position independant executables
as DLLs.
-rw-r--r-- | ld/ChangeLog | 7 | ||||
-rw-r--r-- | ld/emultempl/pe.em | 2 | ||||
-rw-r--r-- | ld/pe-dll.c | 2 |
3 files changed, 9 insertions, 2 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index f9a0780..4f915c5 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,10 @@ +2004-09-30 Filip Navara <navaraf@reactos.com> + + * emultempl/pe.em (gld_${EMULATION_NAME}_set_symbols): Generate + correct base address for position independant executables. + * pe-dll.c (pe_dll_fill_sections): Don't mark position independant + executables as DLLs. + 2004-09-30 Paul Brook <paul@codesourcery.com> * ld.texinfo: Document --target2=abs. diff --git a/ld/emultempl/pe.em b/ld/emultempl/pe.em index 9ff5c9c..9f39aa6 100644 --- a/ld/emultempl/pe.em +++ b/ld/emultempl/pe.em @@ -665,7 +665,7 @@ gld_${EMULATION_NAME}_set_symbols (void) { if (link_info.relocatable) init[IMAGEBASEOFF].value = 0; - else if (init[DLLOFF].value || link_info.shared) + else if (init[DLLOFF].value || (link_info.shared && !link_info.pie)) #ifdef DLL_SUPPORT init[IMAGEBASEOFF].value = (pe_enable_auto_image_base) ? compute_dll_image_base (output_filename) : NT_DLL_IMAGE_BASE; diff --git a/ld/pe-dll.c b/ld/pe-dll.c index 0d0ecda..8813de6 100644 --- a/ld/pe-dll.c +++ b/ld/pe-dll.c @@ -2665,7 +2665,7 @@ pe_dll_fill_sections (bfd *abfd, struct bfd_link_info *info) fill_edata (abfd, info); - if (info->shared) + if (info->shared && !info->pie) pe_data (abfd)->dll = 1; edata_s->contents = edata_d; |