link_elf_obj.c (297702) | link_elf_obj.c (298069) |
---|---|
1/*- 2 * Copyright (c) 1998-2000 Doug Rabson 3 * Copyright (c) 2004 Peter Wemm 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 12 unchanged lines hidden (view full) --- 21 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25 * SUCH DAMAGE. 26 */ 27 28#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 1998-2000 Doug Rabson 3 * Copyright (c) 2004 Peter Wemm 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 12 unchanged lines hidden (view full) --- 21 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25 * SUCH DAMAGE. 26 */ 27 28#include <sys/cdefs.h> |
29__FBSDID("$FreeBSD: head/sys/kern/link_elf_obj.c 297702 2016-04-08 10:23:48Z kib $"); | 29__FBSDID("$FreeBSD: head/sys/kern/link_elf_obj.c 298069 2016-04-15 16:10:11Z pfg $"); |
30 31#include "opt_ddb.h" 32 33#include <sys/param.h> 34#include <sys/systm.h> 35#include <sys/kernel.h> 36#include <sys/lock.h> 37#include <sys/malloc.h> --- 1137 unchanged lines hidden (view full) --- 1175link_elf_search_symbol(linker_file_t lf, caddr_t value, 1176 c_linker_sym_t *sym, long *diffp) 1177{ 1178 elf_file_t ef = (elf_file_t) lf; 1179 u_long off = (uintptr_t) (void *) value; 1180 u_long diff = off; 1181 u_long st_value; 1182 const Elf_Sym *es; | 30 31#include "opt_ddb.h" 32 33#include <sys/param.h> 34#include <sys/systm.h> 35#include <sys/kernel.h> 36#include <sys/lock.h> 37#include <sys/malloc.h> --- 1137 unchanged lines hidden (view full) --- 1175link_elf_search_symbol(linker_file_t lf, caddr_t value, 1176 c_linker_sym_t *sym, long *diffp) 1177{ 1178 elf_file_t ef = (elf_file_t) lf; 1179 u_long off = (uintptr_t) (void *) value; 1180 u_long diff = off; 1181 u_long st_value; 1182 const Elf_Sym *es; |
1183 const Elf_Sym *best = 0; | 1183 const Elf_Sym *best = NULL; |
1184 int i; 1185 1186 for (i = 0, es = ef->ddbsymtab; i < ef->ddbsymcnt; i++, es++) { 1187 if (es->st_name == 0) 1188 continue; 1189 st_value = es->st_value; 1190 if (off >= st_value) { 1191 if (off - st_value < diff) { 1192 diff = off - st_value; 1193 best = es; 1194 if (diff == 0) 1195 break; 1196 } else if (off - st_value == diff) { 1197 best = es; 1198 } 1199 } 1200 } | 1184 int i; 1185 1186 for (i = 0, es = ef->ddbsymtab; i < ef->ddbsymcnt; i++, es++) { 1187 if (es->st_name == 0) 1188 continue; 1189 st_value = es->st_value; 1190 if (off >= st_value) { 1191 if (off - st_value < diff) { 1192 diff = off - st_value; 1193 best = es; 1194 if (diff == 0) 1195 break; 1196 } else if (off - st_value == diff) { 1197 best = es; 1198 } 1199 } 1200 } |
1201 if (best == 0) | 1201 if (best == NULL) |
1202 *diffp = off; 1203 else 1204 *diffp = diff; 1205 *sym = (c_linker_sym_t) best; 1206 1207 return 0; 1208} 1209 --- 304 unchanged lines hidden --- | 1202 *diffp = off; 1203 else 1204 *diffp = diff; 1205 *sym = (c_linker_sym_t) best; 1206 1207 return 0; 1208} 1209 --- 304 unchanged lines hidden --- |