diff options
-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; |