diff options
author | Khem Raj <raj.khem@gmail.com> | 2017-08-28 23:32:18 -0700 |
---|---|---|
committer | Martin Jansa <Martin.Jansa@gmail.com> | 2017-09-02 08:45:47 +0200 |
commit | 78433db2aa9989f7f46c84a8fc78b199e8df9120 (patch) | |
tree | 3040618be30dac8aa6a60ac3b7d662c9c316ebe0 | |
parent | 96f83229cddbd5cd85d5c3ad47d98ce7aa9717b9 (diff) | |
download | meta-openembedded-contrib-78433db2aa9989f7f46c84a8fc78b199e8df9120.tar.gz |
tftp-hpa: Fix PIE build with clang
clang finds a name clash with libc and linker errors out like below
tftpd.o: relocation R_ARM_REL32 against external or undefined symbol `__progname@@GLIBC_2.4' can not be used when making a PIE executable; recompile with -fPIC
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
-rw-r--r-- | meta-networking/recipes-daemons/tftp-hpa/files/0001-__progname-is-provided-by-libc.patch | 62 | ||||
-rw-r--r-- | meta-networking/recipes-daemons/tftp-hpa/tftp-hpa_5.2.bb | 1 |
2 files changed, 63 insertions, 0 deletions
diff --git a/meta-networking/recipes-daemons/tftp-hpa/files/0001-__progname-is-provided-by-libc.patch b/meta-networking/recipes-daemons/tftp-hpa/files/0001-__progname-is-provided-by-libc.patch new file mode 100644 index 0000000000..cead977e28 --- /dev/null +++ b/meta-networking/recipes-daemons/tftp-hpa/files/0001-__progname-is-provided-by-libc.patch @@ -0,0 +1,62 @@ +From 941038fc05be21202cab7a7a9434097fb55ecbe0 Mon Sep 17 00:00:00 2001 +From: Thorsten Glaser <tg@mirbsd.de> +Date: Thu, 31 Jul 2014 16:29:41 +0930 +Subject: [PATCH] __progname[] is provided by libc + +Rename local variable to tftpd_progname to avoid a clash with glibc +global symbols and work around Debian bug #519006 (Closes: #564052). + +[ hpa: specifically, double-underscore symbols in C are reserved for + the implementation, i.e. compiler/libc. ] + +Signed-off-by: Ron Lee <ron@debian.org> +Signed-off-by: H. Peter Anvin <hpa@linux.intel.com> +--- + tftpd/tftpd.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/tftpd/tftpd.c b/tftpd/tftpd.c +index e247b97..5fec7bf 100644 +--- a/tftpd/tftpd.c ++++ b/tftpd/tftpd.c +@@ -76,7 +76,7 @@ static int ai_fam = AF_INET; + #define TRIES 6 /* Number of attempts to send each packet */ + #define TIMEOUT_LIMIT ((1 << TRIES)-1) + +-const char *__progname; ++const char *tftpd_progname; + static int peer; + static unsigned long timeout = TIMEOUT; /* Current timeout value */ + static unsigned long rexmtval = TIMEOUT; /* Basic timeout value */ +@@ -395,9 +395,9 @@ int main(int argc, char **argv) + /* basename() is way too much of a pain from a portability standpoint */ + + p = strrchr(argv[0], '/'); +- __progname = (p && p[1]) ? p + 1 : argv[0]; ++ tftpd_progname = (p && p[1]) ? p + 1 : argv[0]; + +- openlog(__progname, LOG_PID | LOG_NDELAY, LOG_DAEMON); ++ openlog(tftpd_progname, LOG_PID | LOG_NDELAY, LOG_DAEMON); + + srand(time(NULL) ^ getpid()); + +@@ -946,14 +946,14 @@ int main(int argc, char **argv) + syslog daemon gets restarted by the time we get here. */ + if (secure && standalone) { + closelog(); +- openlog(__progname, LOG_PID | LOG_NDELAY, LOG_DAEMON); ++ openlog(tftpd_progname, LOG_PID | LOG_NDELAY, LOG_DAEMON); + } + + #ifdef HAVE_TCPWRAPPERS + /* Verify if this was a legal request for us. This has to be + done before the chroot, while /etc is still accessible. */ + request_init(&wrap_request, +- RQ_DAEMON, __progname, ++ RQ_DAEMON, tftpd_progname, + RQ_FILE, fd, + RQ_CLIENT_SIN, &from, RQ_SERVER_SIN, &myaddr, 0); + sock_methods(&wrap_request); +-- +2.14.1 + diff --git a/meta-networking/recipes-daemons/tftp-hpa/tftp-hpa_5.2.bb b/meta-networking/recipes-daemons/tftp-hpa/tftp-hpa_5.2.bb index 0a418b97fc..fe8a32e7da 100644 --- a/meta-networking/recipes-daemons/tftp-hpa/tftp-hpa_5.2.bb +++ b/meta-networking/recipes-daemons/tftp-hpa/tftp-hpa_5.2.bb @@ -26,6 +26,7 @@ SRC_URI = "http://kernel.org/pub/software/network/tftp/tftp-hpa/tftp-hpa-${PV}.t file://add-error-check-for-disk-filled-up.patch \ file://tftp-hpa-bug-fix-on-separated-CR-and-LF.patch \ file://fix-writing-emtpy-file.patch \ + file://0001-__progname-is-provided-by-libc.patch \ file://tftpd-hpa.socket \ file://tftpd-hpa.service \ " |