From 027b8fb9b88fe137447fb8bb1b61079be9702472 Mon Sep 17 00:00:00 2001 From: Riccardo Schirone Date: Wed, 15 Dec 2021 17:45:16 +0100 Subject: Add rpath to the library paths instead of state->rpath --- libtcc.c | 13 ++++--------- tccelf.c | 2 +- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/libtcc.c b/libtcc.c index 9534e7d..b6dbb01 100644 --- a/libtcc.c +++ b/libtcc.c @@ -1134,7 +1134,7 @@ LIBTCCAPI int tcc_add_library_path(TCCState *s, const char *pathname) } static int tcc_add_library_internal(TCCState *s, const char *fmt, - const char *filename, int flags, char **paths, int nb_paths, const char *rpath) + const char *filename, int flags, char **paths, int nb_paths) { char buf[1024]; int i; @@ -1144,11 +1144,6 @@ static int tcc_add_library_internal(TCCState *s, const char *fmt, if (tcc_add_file_internal(s, buf, flags | AFF_TYPE_BIN) == 0) return 0; } - if (rpath) { - snprintf(buf, sizeof(buf), fmt, rpath, filename); - if (tcc_add_file_internal(s, buf, flags | AFF_TYPE_BIN) == 0) - return 0; - } return -1; } @@ -1157,7 +1152,7 @@ static int tcc_add_library_internal(TCCState *s, const char *fmt, ST_FUNC int tcc_add_dll(TCCState *s, const char *filename, int flags) { return tcc_add_library_internal(s, "%s/%s", filename, flags, - s->library_paths, s->nb_library_paths, s->rpath); + s->library_paths, s->nb_library_paths); } #endif @@ -1165,7 +1160,7 @@ ST_FUNC int tcc_add_dll(TCCState *s, const char *filename, int flags) ST_FUNC int tcc_add_crt(TCCState *s1, const char *filename) { if (-1 == tcc_add_library_internal(s1, "%s/%s", - filename, 0, s1->crt_paths, s1->nb_crt_paths, NULL)) + filename, 0, s1->crt_paths, s1->nb_crt_paths)) tcc_error_noabort("file '%s' not found", filename); return 0; } @@ -1190,7 +1185,7 @@ LIBTCCAPI int tcc_add_library(TCCState *s, const char *libraryname) int flags = s->filetype & AFF_WHOLE_ARCHIVE; while (*pp) { if (0 == tcc_add_library_internal(s, *pp, - libraryname, flags, s->library_paths, s->nb_library_paths, NULL)) + libraryname, flags, s->library_paths, s->nb_library_paths)) return 0; ++pp; } diff --git a/tccelf.c b/tccelf.c index 86d0f80..7e132a1 100644 --- a/tccelf.c +++ b/tccelf.c @@ -3488,7 +3488,7 @@ ST_FUNC int tcc_load_dll(TCCState *s1, int fd, const char *filename, int level) if (dt->d_tag == DT_SONAME) { soname = dynstr + dt->d_un.d_val; } else if (dt->d_tag == DT_RPATH) { - s1->rpath = tcc_strdup(dynstr + dt->d_un.d_val); + tcc_add_library_path(s1, dynstr + dt->d_un.d_val); } } -- cgit v1.2.3