Skip to content

Commit 973481c

Browse files
authored
fix: fix conflicting symbols between v2 & v3 (#100)
Go semantic versionning makes it that we can have multiple major versions of the same module in the same binary. Since we exported an hard-coded symbol it breaks this possibility. This should not happen in practice for customers because noone is using go-libddwaf as-is except dd-trace-go & some DataDog backend code The error: ``` /usr/local/go/pkg/tool/linux_amd64/link: running gcc failed: exit status 1 /bin/ld: /tmp/go-link-2237125540/000030.o: in function `ddwafLogCallbackFn': /tmp/go-build/_cgo_export.c:27: multiple definition of `ddwafLogCallbackFn'; /tmp/go-link-2237125540/000023.o:/tmp/go-build/_cgo_export.c:27: first defined here ``` Signed-off-by: Eliott Bouhana <[email protected]>
1 parent d4e28bc commit 973481c

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

internal/log/log_cgo.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
package log
99

1010
// #include "./ddwaf.h"
11-
// extern void ddwafLogCallbackFn(
11+
// extern void ddwafLogCallbackFnv3(
1212
// DDWAF_LOG_LEVEL level,
1313
// char* function,
1414
// char* file,
@@ -22,11 +22,11 @@ import "github.com/DataDog/go-libddwaf/v3/internal/unsafe"
2222
// CallbackFunctionPointer returns a pointer to the log callback function which
2323
// can be used with libddwaf.
2424
func CallbackFunctionPointer() uintptr {
25-
return uintptr(C.ddwafLogCallbackFn)
25+
return uintptr(C.ddwafLogCallbackFnv3)
2626
}
2727

28-
//export ddwafLogCallbackFn
29-
func ddwafLogCallbackFn(level C.DDWAF_LOG_LEVEL, fnPtr, filePtr *C.char, line C.unsigned, msgPtr *C.char, _ C.uint64_t) {
28+
//export ddwafLogCallbackFnv3
29+
func ddwafLogCallbackFnv3(level C.DDWAF_LOG_LEVEL, fnPtr, filePtr *C.char, line C.unsigned, msgPtr *C.char, _ C.uint64_t) {
3030
function := unsafe.Gostring(unsafe.CastNative[C.char, byte](fnPtr))
3131
file := unsafe.Gostring(unsafe.CastNative[C.char, byte](filePtr))
3232
message := unsafe.Gostring(unsafe.CastNative[C.char, byte](msgPtr))

0 commit comments

Comments
 (0)