Rust: ํŠธ๋ ˆ์ด ํŠธ ๊ฐ์ฒด์˜ ๋””๋ฒ„๊ทธ ํ‘œํ˜„ ์ถ”๊ฐ€

์— ๋งŒ๋“  2012๋…„ 01์›” 19์ผ  ยท  28์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: rust-lang/rust

์—…๋ฐ์ดํŠธ ๋œ ์„ค๋ช…

ํŠน์„ฑ ๊ฐœ์ฒด ( ~T ๋ฐ @T ์—ฌ๊ธฐ์„œ T ๋Š” ํŠน์„ฑ)๋Š” ๊ตฌํ˜„์„ ์ˆจ๊ธฐ๊ณ  ๊ฐ€์ƒ ๋ฉ”์„œ๋“œ ๋””์ŠคํŒจ์น˜ ํ…Œ์ด๋ธ” (์˜ˆ : vtable)์„ ์ „๋‹ฌํ•˜๋Š” ๊ฐœ์ฒด์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋‘ ๊ฐ€์ง€ :

  1. ๋””๋ฒ„๊ฑฐ๋Š” ์ถ”์ƒํ™” ์žฅ๋ฒฝ์„ ์šฐํšŒํ•˜๊ณ  ์ˆจ๊ฒจ์ง„ ๊ตฌํ˜„์„ ๋ณผ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  2. ๊ทธ๋“ค์€ ๋˜ํ•œ vtable์„ ๋ณผ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

    • gdb์— ๋Œ€ํ•œ ๋””๋ฒ„๊ทธ ํ˜•์‹์ด ์–ผ๋งˆ๋‚˜ ์œ ์—ฐํ•œ ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์ตœ์‹  ๋ฒ„์ „์˜ gdb๋Š” C ++ ๊ฐœ์ฒด ์šฉ vtable ์ธ์‡„๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค ( info vtbl ๋˜๋Š” info vtable ). gdb๊ฐ€ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ vtables๋„ ์ถœ๋ ฅ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋””๋ฒ„๊ทธ ์ •๋ณด๋ฅผ ๋งˆ์‚ฌ์ง€ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋ฉ‹์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์›๋ž˜ ์„ค๋ช…

์—†์Šต๋‹ˆ๋‹ค.

A-debuginfo C-feature-request P-low T-compiler

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์˜ค๋Š˜ ์ฒซ ์„ฑ๊ณต :

(gdb) p tu
$1 = traitobjtest::&T {pointer: 0x7fffffffe047 "\027\070\340\377\377\377\177\000", vtable: 0x5555555c34e8 <vtable> "\360\253UUUU\000"}
(gdb) p *tu
$2 = 23

๋ชจ๋“  28 ๋Œ“๊ธ€

ํŠธ๋ ˆ์ด ํŠธ์˜ ๋””๋ฒ„๊ทธ ํ‘œํ˜„์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋‚˜๋Š” Trait์„ ๋Ÿฐํƒ€์ž„์— ๋„๋‹ฌ ํ•  ๋•Œ ์ง€์›Œ์ง€๋Š” ์ˆœ์ „ํžˆ ์ปดํŒŒ์ผ ํƒ€์ž„ ์—”ํ‹ฐํ‹ฐ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@jdm ์ด๊ฒƒ์€ @Trait ๊ฐ์ฒด๋ฅผ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๊นŒ?

์˜ˆ, ํŠน์„ฑ ๊ฐœ์ฒด (~ ๋ฐ @ ๋‹ค์–‘์„ฑ)๋ฅผ ํฌํ•จํ•˜๋„๋ก ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

middle/trans/debuginfo.rs ์— ๋”ฐ๋ฅด๋ฉด : cx.sess.span_note(span, "debuginfo for trait NYI");

์ฆ‰, ์ด๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์œ ํšจํ•˜๊ณ  ์ ์ ˆํ•˜๊ฒŒ ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋˜๊ณ  ์ด์ •ํ‘œ๊ฐ€ ์ง€์ •๋ฉ๋‹ˆ๋‹ค (2013-06-19).

๋ถ„๋ฅ˜ ๋ฐฉ๋ฌธ; @michaelwoerister๋กœ ์—ฐ๊ธฐํ•ฉ๋‹ˆ๋‹ค.

๋ถ„๋ฅ˜ ๋ฐฉ๋ฌธ; @michaelwoerister๋กœ ์—ฐ๊ธฐํ•ฉ๋‹ˆ๋‹ค.

์—ฌ์ „ํžˆ NYI์ด์ง€๋งŒ ์ด๋ฒˆ ๋‹ฌ ์–ธ์  ๊ฐ€ ๋‹ค๋ฃจ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์ตœ์‹  ์ •๋ณด:

PR # 9168๋ถ€ํ„ฐ ํŠน์„ฑ ๊ฐœ์ฒด์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋ณธ ์ง€์›์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํŠธ๋ ˆ์ด ํŠธ ๊ฐœ์ฒด ํฌ์ธํ„ฐ๋Š” ์˜ฌ๋ฐ”๋ฅธ ํฌ๊ธฐ (ํฌ์ธํ„ฐ 2 ๊ฐœ)์™€ ์ด๋ฆ„ ({sigil} {mutability} {trait name})์ด ์˜ฌ๋ฐ”๋ฅธ ๊ตฌ์กฐ์ฒด๋กœ ์„ค๋ช…๋˜๋ฉฐ ์˜ฌ๋ฐ”๋ฅธ ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค์— ๋ฐฐ์น˜๋ฉ๋‹ˆ๋‹ค. ์ด "ํŒป ํฌ์ธํ„ฐ"์˜ ๋‚ด๋ถ€๋Š” ์•„์ง ๋” ์ด์ƒ ์„ค๋ช…๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋น ์ง„ ๊ฒƒ์€ ํŠน์„ฑ์˜ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ๋“ค์ด ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„๋˜๋Š”์ง€์— ๋Œ€ํ•ด ์ถฉ๋ถ„ํžˆ ์•Œ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

1.0์ด ์•„๋‹ˆ๋ผ ๋†’์Œ

@michaelwoerister : ๊ทธ๋Ÿฐ๋ฐ ์ƒˆ๋กœ์šด vtable ๋ ˆ์ด์•„์›ƒ์€ [drop_glue, method, method2, method3, ...] ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ๋ฏธ๋ž˜์— supertrait ๋ฉ”์†Œ๋“œ๊ฐ€ trait ๊ฐ์ฒด์—์„œ ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋  ๋•Œ ์–ด๋–ป๊ฒŒ ๋“  ๋ฐ”๋€” ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

Fat ๊ฐ€ DST ๊ตฌ์กฐ์ฒด ์ธ Fat<Trait> ์™€ ๊ฐ™์€ ๊ฐœ์ฒด๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— DST์—์„œ๋Š” ๋” ๋ณต์žกํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ํŠน์„ฑ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์Šคํ… ์ฝ”๋“œ๊ฐ€ ์กฐ๊ธˆ ๋” ๊นจ์กŒ์ง€๋งŒ ์Šคํ… ์ผ ๋ฟ์ด๋ฏ€๋กœ ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ฑฐ๊ธฐ์— FIXME๋ฅผ ๋‚จ๊ฒผ์Šต๋‹ˆ๋‹ค.

๋ถ„๋ฅ˜ ๋ฒ”ํ”„ : ํ˜„์žฌ ์ƒํƒœ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์—ฌ์ „ํžˆํ•ด์•ผ ํ•  ์ผ

๋‹ค์Œ์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
(1) ์ •์˜ํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฐ ํŠน์„ฑ์— ๋Œ€ํ•œ ์œ ํ˜• ์„ค๋ช…์„ ์ž‘์„ฑํ•˜์‹ญ์‹œ์˜ค. ์•„์ง DWARF ํ‘œ์ค€์—๋Š” ํŠน์„ฑ์ด ์—†์œผ๋ฏ€๋กœ DW_AT_interface ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ DW_AT_struct ์‚ฌ์šฉํ•˜๋ฉด C ์ง€ํ–ฅ ๋””๋ฒ„๊ฑฐ์™€ ๋” ์ž˜ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค.

(2) ํŠน์„ฑ ํฌ์ธํ„ฐ ( &Trait ๋“ฑ)๋ฅผ (*(), *OpaqueVTable<Trait>) ์œ ํ˜•์˜ ํŠœํ”Œ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

(3) ํŒป ํฌ์ธํ„ฐ๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ํฌ์ธํ„ฐ ๊ฐ’๊ณผ ์œ ํ˜• ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ vtable์„ ์ธ์‡„ํ•˜๋Š” Python์—์„œ ์‚ฌ์šฉ์ž ์ง€์ • GDB / LLDB ๋ช…๋ น์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

์™„๋ฒฝํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ํ˜„์žฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ˆ˜๋‹จ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. vtable์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ํ•จ์ˆ˜์˜ ์‹ฌ๋ณผ ์ด๋ฆ„์€ ํŠธ๋ ˆ์ด ํŠธ ๊ฐœ์ฒด์˜ ์‹ค์ œ ๋Ÿฐํƒ€์ž„ ์œ ํ˜•๋„ ๋‚˜ํƒ€๋‚ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋””๋ฒ„๊ทธ ์ •๋ณด๊ฐ€์žˆ๋Š” ๋นŒ๋“œ์—์„œ๋งŒ (์ฆ‰, ๋ฆด๋ฆฌ์Šค ๋นŒ๋“œ๊ฐ€ ์•„๋‹˜) ๋งค์šฐ ์ ์€ ์–‘๋งŒ

๋ถ„๋ฅ˜ : ์—ฌ์ „ํžˆํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. cc @Manishearth @tromey P-low

ํ˜„์žฌ P-low ๋ฐ P-medium

P- ๋งค์ฒด ์ œ๊ฑฐ

๋‚˜๋Š” ์ตœ๊ทผ์— ์ด๊ฒƒ์„ ์กฐ๊ธˆ ์กฐ์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ์€ :

  • ๋ฐฉ์ถœ๋˜๋Š” ๊ฐ vtable์„ ์„ค๋ช…ํ•˜๋Š” ์ผ๋ถ€ DWARF๋ฅผ ๋ฐฉ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€์˜ VTABLE์˜ ์œ„์น˜, ๊ทธ vtable์— ์˜ํ•ด ํ‘œํ˜„ ์ฝ˜ํฌ๋ฆฌํŠธ ์ข…๋ฅ˜ (A ํฌ์ธํ„ฐ - ํˆฌ - ๊ธฐ๋Šฅ์˜ ๊ตฌ์กฐ์ฒด ๊ฐ™์€) VTABLE์˜ ์œ ํ˜•์„ ๊ธฐ์ˆ  ํ•  ๊ฒƒ (์–ด์ฉŒ๋ฉด DW_AT_containing_type ์ด๋ฅผ ์œ„ํ•ด ์šฉ๋„ ๋ณ€๊ฒฝ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)
  • ํŠน์„ฑ ๊ฐœ์ฒด ํฌ์ธํ„ฐ์˜ ๋‚ด๋ถ€๋ฅผ ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. DWARF๊ฐ€ ์ฃผ์–ด์ง„ ํ•จ์ˆ˜์˜ vtable ์Šฌ๋กฏ์„ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜๊ณ  ์žˆ์ง€๋งŒ "์ด ๊ฐœ์ฒด์˜ ๊ตฌ์„ฑ์›์ด vtable์ž…๋‹ˆ๋‹ค"๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฉ๋ฒ•์ด์—†๋Š” ๊ฒƒ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์— ํ˜„์žฌ๋Š” ์•ฝ๊ฐ„์˜ ํ•ดํ‚น์„ ํ†ตํ•ด ์ˆ˜ํ–‰ํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. .

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋””๋ฒ„๊ฑฐ๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ํŠธ๋ ˆ์ด ํŠธ ๊ฐœ์ฒด ํฌ์ธํ„ฐ๋ฅผ ์ธ์‡„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ’์˜ ์œ ํ˜•์— vtable์ด์žˆ๋Š” ๊ฒฝ์šฐ ํ•˜์œ„ ํ•ญ๋ชฉ์—์„œ vtable์„ ๊ฐ€์ ธ์˜ค๊ณ  DWARF์—์„œ vtable์˜ ์ฃผ์†Œ๋ฅผ ์กฐํšŒํ•˜์—ฌ vtable ์œ ํ˜•์„ ์ฐพ์€ ๋‹ค์Œ ๊ตฌ์ฒด์ ์ธ ์œ ํ˜•์„ ์‚ฌ์šฉํ•˜์—ฌ ํŽ˜์ด๋กœ๋“œ ํฌ์ธํ„ฐ๋ฅผ ๋””์ฝ”๋”ฉํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š”์ด ์ผ์„ํ•˜๊ณ ์žˆ๋‹ค. rustc๊ฐ€ ์ž‘์€ DWARF ํ™•์žฅ ( DW_AT_containing_type ) ์•„์ด๋””์–ด๋ฅผ ๋‚ด๋„๋กํ•˜๋Š” LLVM ํŒจ์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. vtable์˜ ๊ธฐ๋ณธ ์‚ฌํ•ญ (๋ฉ”์†Œ๋“œ๋ฅผ ๋‚ด ๋ณด๋‚ด์ง€ ์•Š๊ณ  ์ฃผ์†Œ ๋ฐ ํฌํ•จํ•˜๋Š” ์œ ํ˜•)์„ ๋‚ด๋ณด๋‚ด๋Š” rustc ํŒจ์น˜์™€ ๋ชจ๋“  ๊ฒƒ์„ ์ฝ๊ณ  print ์ž‘๋™ํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ๋Œ€๋ถ€๋ถ„์˜ gdb ํŒจ์น˜.

์˜ค๋Š˜ ์ฒซ ์„ฑ๊ณต :

(gdb) p tu
$1 = traitobjtest::&T {pointer: 0x7fffffffe047 "\027\070\340\377\377\377\177\000", vtable: 0x5555555c34e8 <vtable> "\360\253UUUU\000"}
(gdb) p *tu
$2 = 23

์‹ ๋‚œ๋‹ค!

LLVM ํŒจ์น˜๋Š” ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค : http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20171016/495458.html

phabricator๋กœ ์ด๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. https://reviews.llvm.org/D39503 ์„ ๋”ฐ๋ฅด๋Š” ๊ฒƒ์ด ๋” ๊ฐ„๋‹จ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŠธ๋ ˆ์ด ํŠธ ๊ฐ์ฒด๋ฅผ ์ธ์‡„ํ•˜๊ธฐ์œ„ํ•œ gdb ํŒจ์น˜๋Š” ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค : https://sourceware.org/ml/gdb-patches/2017-11/msg00289.html

ํŒŒํŠธ 2๋Š” vtable์˜ ํ•„๋“œ๋ฅผ ์„ค๋ช…ํ•˜์—ฌ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์–ด๋ ค์šด์ง€๋ณด๊ธฐ ์œ„ํ•ด rustc ๋น„ํŠธ๋ฅผ ๋ณด์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. gdb์˜ info vtbl ๋น„ํŠธ๋Š” ์–ด๋ ต์ง€ ์•Š์œผ๋ฉฐ ๋Œ€๋ถ€๋ถ„ ๊ธฐ์กด ๋ช…๋ น์„ ์กฐ๊ธˆ ๋” ๊ฐ€์ƒํ™”ํ•ฉ๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์— ์˜ฌ๋ฐ”๋ฅธ ํ•„๋“œ ์ด๋ฆ„์ด ์žˆ์œผ๋ฉด ํŠน์„ฑ ๊ฐœ์ฒด์— ๋Œ€ํ•œ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ„๋‹จํ•ด์•ผํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

gdb ํŒจ์น˜ ๋ฒ„์ „ 2๋Š” ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค : https://sourceware.org/ml/gdb-patches/2017-11/msg00369.html

gdb ํŒจ์น˜๋Š” ํ˜„์žฌ ์žˆ์ง€๋งŒ ๊ตฌํ˜„ํ•ด์•ผ ํ•  ๋‹ค๋ฅธ vtable ์ž‘์—…์ด ๋‚จ์•„ ์žˆ์œผ๋ฏ€๋กœ์ด ๋ฌธ์ œ๋Š” ์—ด์–ด ๋‘์–ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@tromey "vtable ์ž‘์—…"์— gdb ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ ์•„๋‹ˆ๋ฉด rustc ๋ณ€๊ฒฝ ๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?

@tromey "vtable ์ž‘์—…"์— gdb ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ ์•„๋‹ˆ๋ฉด rustc ๋ณ€๊ฒฝ ๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?

์ด์ƒ์ ์œผ๋กœ๋Š” ๋‘˜ ๋‹ค ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ rustc ๋น„ํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ์ข‹์€ ์‹œ์ž‘์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค (์–ด์จŒ๋“  ์ด๊ฒƒ์ด ๋จผ์ € ์™€์•ผํ•ฉ๋‹ˆ๋‹ค). ์—ฌ๊ธฐ์„œ ์ž‘์—…์€ rustc๊ฐ€ DWARF์˜ vtable์— ๋Œ€ํ•œ ์ „์ฒด ์„ค๋ช…์„ ๋‚ด๋ณด๋‚ด๋„๋กํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๊ฐ ๊ตฌ์„ฑ์›์˜ ์œ ํ˜•๊ณผ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰