《CSAPP》(第3版)答案(第七章)

《CSAPP》(第3版)答案(第七章)

P6

in .symtab? type module section
buf Yes external m .data
bufp0 Yes global swap .data
bufp1 Yes local swap .bss
swap Yes global swap .text
temp No ------ ----- ------
incr Yes local swap .text
count Yes local swap .bss

P7

double x;
void f() {
  /*x = -0.0;*/
}

把x=-0.0删了。

P8

  • A
    main.1
    main.2
  • B
    unknown
    unknown
  • C
    error
    error

P9

No, I can’t.

P10

  • A
gcc p.o libx.a
  • B
gcc p.o libx.a liby.a libx.a
  • C
gcc p.o libx.a liby.a libx.a libz.a

P11

为bss文件留出空间

P12

  • A
    A D D R ( s ) = A D D R ( . t e x t ) = 0 x 4004 e 0 ADDR(s) = ADDR(.text) = 0x4004e0
    A D D R ( r . s y m b o l ) = A D D R ( s w a p ) = 0 x 4004 f 8 ADDR(r.symbol) = ADDR(swap) = 0x4004f8
    r e f a d d r = A D D R ( s ) + r . o f f s e t = 0 x 4004 e a refaddr = ADDR(s) + r.offset = 0x4004ea
    r e f p t r = ( u n s i g n e d ) ( A D D R ( r . s y m b o l ) + r . a d d e n d r e f a d d r ) = 0 x a *refptr = (unsigned) (ADDR(r.symbol) + r.addend - refaddr) = 0xa
  • B
    A D D R ( s ) = A D D R ( . t e x t ) = 0 x 4004 d 0 ADDR(s) = ADDR(.text) = 0x4004d0
    A D D R ( r . s y m b o l ) = A D D R ( s w a p ) = 0 x 400500 ADDR(r.symbol) = ADDR(swap) = 0x400500
    r e f a d d r = A D D R ( s ) + r . o f f s e t = 0 x 4004 d a refaddr = ADDR(s) + r.offset = 0x4004da
    r e f p t r = ( u n s i g n e d ) ( A D D R ( r . s y m b o l ) + r . a d d e n d r e f a d d r ) = 0 x 22 *refptr = (unsigned) (ADDR(r.symbol) + r.addend - refaddr) = 0x22

P13

  • A
whereis libm.a
输出:path_m
ar t path_m
whereis libc.a
输出:pth_c
ar t path_c
  • B
    NO.
  • C
ldd og-little

第七章 完

发布了113 篇原创文章 · 获赞 73 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/swy_swy_swy/article/details/105228051