bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug ld/19538] ld >= 2.26 breaks syslinux (bios) build


From: hjl.tools at gmail dot com
Subject: [Bug ld/19538] ld >= 2.26 breaks syslinux (bios) build
Date: Sat, 30 Jan 2016 22:18:00 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=19538

--- Comment #7 from H.J. Lu <hjl.tools at gmail dot com> ---
(In reply to address@hidden from comment #5)
> 
> ldlinux.elf shouldn't be build pie, so that would explain why.

It was changed to PIE by

commit 38e58635d3868c23537fc5dce87b152a52df34ad
Author: chandramouli narayanan <address@hidden>
Date:   Mon Jun 25 12:45:26 2012 -0700

    The make files have undergone changes to support both i386 and x86_64
platforms.
    Pertinent changes are sprinkled through *.mk and Makefile in the syslinux
tree.

    Build architecture is specified at the command line via ARCH macro. This is
to enable whether
    one is building for the native platform or cross-building for a different
architecture. Currently,
    the only supported architectures via ARCH macro are i386 and x86_64.

    There are some modules (e.g. memdump) that don't build under the EFI
environment. To go forward
    with efi boot support, a separate EFI_BUILD=1 macro has been added and is
required to be
    specified while building. This is a temporary solution for the current
build environment.

    example build:

    On a x86_64 platform, the following cross-builds syslinux for i386
    To build for i386: make EFI_BUILD=1 ARCH=i386

    On a x86_64 platform, the following builds syslinux for x86_64
    To build natively: make EFI_BUILD=1

    Changes specific to GCC and LD options:

    Architecture specific flags and include/search directories are set up for
GCC and LD commands.
    Internally, GCC options such as stack-boundary, PIC and machine
architecture are set up
    based on ARCH macro. While stack-boundary=2 is fine for i386, it does not
work for x86_64
    and so it is left to the default value. Using -fPIE with gcc does not work
with ld on x86_64,
    but -fPIC works fine. Similarly, target and elf options are set up for
linking
    as approrpriate for architecture.

    Assumption about gnu-efi install path:

    Since the EFI build supports both EFI32 and EFI64, the following
assumptions
    are made with regard to the installed location of gnu-efi on the build
platform.
    1. gnu-efi-ia32: assumed installed in /usr/local
    [ EFI-32 include files in /usr/local/include/efi and gnu-efi library in
/usr/local/lib/ ]
    2. gnu-efi-x86_64: assumed installed in /usr
    [ EFI-64 include files in /usr/include/efi and gnu-efi library in
/usr/lib64/ ]

    Remanants of the unused old i386-only files, if any, need to be pruned.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]