diff options
author | Khem Raj <raj.khem@gmail.com> | 2017-08-28 23:32:18 -0700 |
---|---|---|
committer | Joe MacDonald <joe_macdonald@mentor.com> | 2017-09-12 10:55:06 -0400 |
commit | c8850edbbffbc6eb9fbf70a885b65eb33a12468b (patch) | |
tree | ee7a235f2dc37bcedf5361a1a5612c5cf78cfa2a /meta-networking/recipes-daemons/tftp-hpa | |
parent | 80ab79da53a55ff0a742017957a62596d1cc21c5 (diff) | |
download | meta-openembedded-c8850edbbffbc6eb9fbf70a885b65eb33a12468b.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>
Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
Diffstat (limited to 'meta-networking/recipes-daemons/tftp-hpa')
-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 000000000..cead977e2 --- /dev/null +++ b/meta-networking/recipes-daemons/tftp-hpa/files/0001-__progname-is-provided-by-libc.patch | |||
@@ -0,0 +1,62 @@ | |||
1 | From 941038fc05be21202cab7a7a9434097fb55ecbe0 Mon Sep 17 00:00:00 2001 | ||
2 | From: Thorsten Glaser <tg@mirbsd.de> | ||
3 | Date: Thu, 31 Jul 2014 16:29:41 +0930 | ||
4 | Subject: [PATCH] __progname[] is provided by libc | ||
5 | |||
6 | Rename local variable to tftpd_progname to avoid a clash with glibc | ||
7 | global symbols and work around Debian bug #519006 (Closes: #564052). | ||
8 | |||
9 | [ hpa: specifically, double-underscore symbols in C are reserved for | ||
10 | the implementation, i.e. compiler/libc. ] | ||
11 | |||
12 | Signed-off-by: Ron Lee <ron@debian.org> | ||
13 | Signed-off-by: H. Peter Anvin <hpa@linux.intel.com> | ||
14 | --- | ||
15 | tftpd/tftpd.c | 10 +++++----- | ||
16 | 1 file changed, 5 insertions(+), 5 deletions(-) | ||
17 | |||
18 | diff --git a/tftpd/tftpd.c b/tftpd/tftpd.c | ||
19 | index e247b97..5fec7bf 100644 | ||
20 | --- a/tftpd/tftpd.c | ||
21 | +++ b/tftpd/tftpd.c | ||
22 | @@ -76,7 +76,7 @@ static int ai_fam = AF_INET; | ||
23 | #define TRIES 6 /* Number of attempts to send each packet */ | ||
24 | #define TIMEOUT_LIMIT ((1 << TRIES)-1) | ||
25 | |||
26 | -const char *__progname; | ||
27 | +const char *tftpd_progname; | ||
28 | static int peer; | ||
29 | static unsigned long timeout = TIMEOUT; /* Current timeout value */ | ||
30 | static unsigned long rexmtval = TIMEOUT; /* Basic timeout value */ | ||
31 | @@ -395,9 +395,9 @@ int main(int argc, char **argv) | ||
32 | /* basename() is way too much of a pain from a portability standpoint */ | ||
33 | |||
34 | p = strrchr(argv[0], '/'); | ||
35 | - __progname = (p && p[1]) ? p + 1 : argv[0]; | ||
36 | + tftpd_progname = (p && p[1]) ? p + 1 : argv[0]; | ||
37 | |||
38 | - openlog(__progname, LOG_PID | LOG_NDELAY, LOG_DAEMON); | ||
39 | + openlog(tftpd_progname, LOG_PID | LOG_NDELAY, LOG_DAEMON); | ||
40 | |||
41 | srand(time(NULL) ^ getpid()); | ||
42 | |||
43 | @@ -946,14 +946,14 @@ int main(int argc, char **argv) | ||
44 | syslog daemon gets restarted by the time we get here. */ | ||
45 | if (secure && standalone) { | ||
46 | closelog(); | ||
47 | - openlog(__progname, LOG_PID | LOG_NDELAY, LOG_DAEMON); | ||
48 | + openlog(tftpd_progname, LOG_PID | LOG_NDELAY, LOG_DAEMON); | ||
49 | } | ||
50 | |||
51 | #ifdef HAVE_TCPWRAPPERS | ||
52 | /* Verify if this was a legal request for us. This has to be | ||
53 | done before the chroot, while /etc is still accessible. */ | ||
54 | request_init(&wrap_request, | ||
55 | - RQ_DAEMON, __progname, | ||
56 | + RQ_DAEMON, tftpd_progname, | ||
57 | RQ_FILE, fd, | ||
58 | RQ_CLIENT_SIN, &from, RQ_SERVER_SIN, &myaddr, 0); | ||
59 | sock_methods(&wrap_request); | ||
60 | -- | ||
61 | 2.14.1 | ||
62 | |||
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 0a418b97f..fe8a32e7d 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 | |||
26 | file://add-error-check-for-disk-filled-up.patch \ | 26 | file://add-error-check-for-disk-filled-up.patch \ |
27 | file://tftp-hpa-bug-fix-on-separated-CR-and-LF.patch \ | 27 | file://tftp-hpa-bug-fix-on-separated-CR-and-LF.patch \ |
28 | file://fix-writing-emtpy-file.patch \ | 28 | file://fix-writing-emtpy-file.patch \ |
29 | file://0001-__progname-is-provided-by-libc.patch \ | ||
29 | file://tftpd-hpa.socket \ | 30 | file://tftpd-hpa.socket \ |
30 | file://tftpd-hpa.service \ | 31 | file://tftpd-hpa.service \ |
31 | " | 32 | " |