[
https://issues.apache.org/jira/browse/DISPATCH-2178?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17367096#comment-17367096
]
ASF GitHub Bot commented on DISPATCH-2178:
------------------------------------------
astitcher commented on a change in pull request #1267:
URL: https://github.com/apache/qpid-dispatch/pull/1267#discussion_r655407202
##########
File path: src/server.c
##########
@@ -1738,7 +1738,7 @@ void qd_connector_decref(qd_connector_t* connector)
}
}
-__attribute__((noinline)) // permit replacement by dummy implementation in
unit_tests
+__attribute__((weak)) // permit replacement by dummy implementation in
unit_tests
Review comment:
[Not a comment on this PR really!]
This whole replacing a function by redefining in the unit tests without an
injection API makes me queazy! I'm not entirely sure why - it just seems
error-prone.
##########
File path: tests/CMakeLists.txt
##########
@@ -40,8 +40,8 @@ set(unit_test_SOURCES
thread_test.c
)
-add_executable(unit_tests ${unit_test_SOURCES})
-target_link_libraries(unit_tests qpid-dispatch)
+add_executable(unit_tests ${unit_test_SOURCES} $<TARGET_OBJECTS:qpid-dispatch>)
+target_link_libraries(unit_tests qpid-dispatch-libraries)
Review comment:
In this and the subsequent similar changes I don't understand why you
need both to add the object files and to add a static library. Surely you are
just effectively adding the same object twice like this? I think you only need
to do the add_executable() change and remove the target_link_libraries() unless
there is another library to add.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
> Do not build separate libqpid-dispatch.so
> -----------------------------------------
>
> Key: DISPATCH-2178
> URL: https://issues.apache.org/jira/browse/DISPATCH-2178
> Project: Qpid Dispatch
> Issue Type: Improvement
> Affects Versions: 1.16.0
> Reporter: Jiri Daněk
> Assignee: Jiri Daněk
> Priority: Major
>
> h3. Motivation
> The split into a binary and a library is not unprecedented (e.g. CPython does
> exactly the same thing), but in Dispatch it is avoidable with minimal code
> changes (an executable can {{dlopen(NULL, ...)}} itself.
> Getting rid of libqpid-dispatch.so will mean one less file that we need to
> install (and since it is not a published API, finding a good place for the so
> has been tricky in the past (see DISPATCH-194).
> Furthermore, avoiding the indirection of a library call will likely give some
> performance benefit at a low level (individual function calls) similar to
> (again) Python in https://fedoraproject.org/wiki/Changes/PythonStaticSpeedup.
> The gains can be best utilized after doing LTO (see DISPATCH-2121).
> h3. Expected issues
> The problem with this is that we lose semantic interposition
> (https://fedoraproject.org/wiki/Changes/PythonNoSemanticInterpositionSpeedup),
> meaning we won't be able to simply override symbols from libqpid-dispatch.so
> at runtime. This is an issue because Dispatch unittests depend on this. (See
> DISPATCH-1783)
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]