《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删了。
P8
A main.1 main.2
B unknown unknown
C error error
P9
No, I can’t.
P10
gcc p.o libx.a
gcc p.o libx.a liby.a libx.a
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 ( s ) = A D D R ( . t e x t ) = 0 x 4 0 0 4 e 0
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
A D D R ( r . s y m b o l ) = A D D R ( s w a p ) = 0 x 4 0 0 4 f 8
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 a d d r = A D D R ( s ) + r . o f f s e t = 0 x 4 0 0 4 e a
∗
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
∗ 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
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 ( s ) = A D D R ( . t e x t ) = 0 x 4 0 0 4 d 0
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
A D D R ( r . s y m b o l ) = A D D R ( s w a p ) = 0 x 4 0 0 5 0 0
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 a d d r = A D D R ( s ) + r . o f f s e t = 0 x 4 0 0 4 d a
∗
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
∗ 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 2 2
P13
whereis libm.a
输出:path_m
ar t path_m
whereis libc.a
输出:pth_c
ar t path_c
ldd og-little
第七章 完