* Renamed libnetapi to libbnetapi. Create a symlink in the image.
* Extended R5 compatibility check to also consider calls from libbnetapi. * Fixed incorrect R5 compatibility check in BNetEndpoint constructor. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25489 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -359,7 +359,7 @@ if $(HAIKU_SHARED_LIBSUPC++) {
|
|||||||
|
|
||||||
# network libraries
|
# network libraries
|
||||||
HAIKU_NETWORK_LIBS = network ;
|
HAIKU_NETWORK_LIBS = network ;
|
||||||
HAIKU_NETAPI_LIB = netapi ;
|
HAIKU_NETAPI_LIB = bnetapi ;
|
||||||
HAIKU_SELECT_UNAME_ETC_LIB = ; # libroot, against which we link anyway
|
HAIKU_SELECT_UNAME_ETC_LIB = ; # libroot, against which we link anyway
|
||||||
|
|
||||||
# library and executable glue code
|
# library and executable glue code
|
||||||
@@ -408,8 +408,8 @@ HAIKU_BUILD_DESCRIPTION ?= "Unknown Build" ;
|
|||||||
# init library name map
|
# init library name map
|
||||||
{
|
{
|
||||||
local i ;
|
local i ;
|
||||||
for i in be game GL mail media midi midi2 network netapi opengl screensaver root z
|
for i in be game GL mail media midi midi2 network bnetapi opengl
|
||||||
textencoding tracker translation {
|
screensaver root z textencoding tracker translation {
|
||||||
HAIKU_LIBRARY_NAME_MAP_$(i) = lib$(i).so ;
|
HAIKU_LIBRARY_NAME_MAP_$(i) = lib$(i).so ;
|
||||||
}
|
}
|
||||||
HAIKU_LIBRARY_NAME_MAP_libstdc++ = $(HAIKU_LIBSTDC++) ;
|
HAIKU_LIBRARY_NAME_MAP_libstdc++ = $(HAIKU_LIBSTDC++) ;
|
||||||
@@ -658,7 +658,7 @@ if $(HOST_PLATFORM_BEOS_COMPATIBLE) {
|
|||||||
# network libraries
|
# network libraries
|
||||||
if $(HOST_PLATFORM_HAIKU_COMPATIBLE) {
|
if $(HOST_PLATFORM_HAIKU_COMPATIBLE) {
|
||||||
HOST_NETWORK_LIBS = network ;
|
HOST_NETWORK_LIBS = network ;
|
||||||
HOST_NETAPI_LIB = netapi ;
|
HOST_NETAPI_LIB = bnetapi ;
|
||||||
HOST_SELECT_UNAME_ETC_LIB = ; # libroot
|
HOST_SELECT_UNAME_ETC_LIB = ; # libroot
|
||||||
} else if $(HOST_PLATFORM_BONE_COMPATIBLE) {
|
} else if $(HOST_PLATFORM_BONE_COMPATIBLE) {
|
||||||
HOST_NETWORK_LIBS = socket bind ;
|
HOST_NETWORK_LIBS = socket bind ;
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ BEOS_DEMOS = BSnow Chart Clock $(X86_ONLY)Cortex FontDemo
|
|||||||
Playground Pulse Sudoku
|
Playground Pulse Sudoku
|
||||||
;
|
;
|
||||||
BEOS_SYSTEM_LIBS = libbe.so $(HAIKU_LIBSTDC++) libmedia.so libtracker.so
|
BEOS_SYSTEM_LIBS = libbe.so $(HAIKU_LIBSTDC++) libmedia.so libtracker.so
|
||||||
libtranslation.so libnetapi.so libnetwork.so libdebug.so libbsd.so
|
libtranslation.so libbnetapi.so libnetwork.so libdebug.so libbsd.so
|
||||||
libmail.so libtextencoding.so libz.so libfreetype.so libpng.so libmidi.so
|
libmail.so libtextencoding.so libz.so libfreetype.so libpng.so libmidi.so
|
||||||
libmidi2.so libdevice.so libgame.so libscreensaver.so <revisioned>libroot.so
|
libmidi2.so libdevice.so libgame.so libscreensaver.so <revisioned>libroot.so
|
||||||
$(X86_ONLY)libGL.so libfluidsynth.so liblpsolve55.so liblinprog.so libalm.so
|
$(X86_ONLY)libGL.so libfluidsynth.so liblpsolve55.so liblinprog.so libalm.so
|
||||||
@@ -197,6 +197,8 @@ for lib in $(BEOS_SYSTEM_LIBS_LIBNETWORK_ALIASES) {
|
|||||||
AddSymlinkToHaikuImage beos system lib : libnetwork.so : $(lib) ;
|
AddSymlinkToHaikuImage beos system lib : libnetwork.so : $(lib) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AddSymlinkToHaikuImage beos system lib : libbnetapi.so : libnetapi.so ;
|
||||||
|
|
||||||
# libGL.so has GLUT built-in
|
# libGL.so has GLUT built-in
|
||||||
if $(TARGET_ARCH) = x86 {
|
if $(TARGET_ARCH) = x86 {
|
||||||
AddSymlinkToHaikuImage beos system lib : $(X86_ONLY)libGL.so : libglut.so ;
|
AddSymlinkToHaikuImage beos system lib : $(X86_ONLY)libGL.so : libglut.so ;
|
||||||
|
|||||||
@@ -41,5 +41,7 @@ struct r5_sockaddr_in {
|
|||||||
extern bool __gR5Compatibility;
|
extern bool __gR5Compatibility;
|
||||||
extern addr_t __gNetworkStart;
|
extern addr_t __gNetworkStart;
|
||||||
extern addr_t __gNetworkEnd;
|
extern addr_t __gNetworkEnd;
|
||||||
|
extern addr_t __gNetAPIStart;
|
||||||
|
extern addr_t __gNetAPIEnd;
|
||||||
|
|
||||||
#endif // NET_R5_COMPATIBILITY_H
|
#endif // NET_R5_COMPATIBILITY_H
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2006, Haiku, Inc. All Rights Reserved.
|
* Copyright 2006-2008, Haiku, Inc. All Rights Reserved.
|
||||||
* Distributed under the terms of the MIT License.
|
* Distributed under the terms of the MIT License.
|
||||||
*
|
*
|
||||||
* Authors:
|
* Authors:
|
||||||
@@ -18,6 +18,8 @@
|
|||||||
bool __gR5Compatibility = false;
|
bool __gR5Compatibility = false;
|
||||||
addr_t __gNetworkStart;
|
addr_t __gNetworkStart;
|
||||||
addr_t __gNetworkEnd;
|
addr_t __gNetworkEnd;
|
||||||
|
addr_t __gNetAPIStart;
|
||||||
|
addr_t __gNetAPIEnd;
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ SetSubDirSupportedPlatformsBeOSCompatible ;
|
|||||||
UsePrivateHeaders net ;
|
UsePrivateHeaders net ;
|
||||||
|
|
||||||
local netapi_sources =
|
local netapi_sources =
|
||||||
|
init.cpp
|
||||||
NetEndpoint.cpp
|
NetEndpoint.cpp
|
||||||
NetAddress.cpp
|
NetAddress.cpp
|
||||||
NetBuffer.cpp
|
NetBuffer.cpp
|
||||||
@@ -43,7 +44,7 @@ if $(TARGET_PLATFORM) != haiku {
|
|||||||
# boot home config lib ;
|
# boot home config lib ;
|
||||||
boot home Desktop haiku-networkingkit lib ;
|
boot home Desktop haiku-networkingkit lib ;
|
||||||
} else {
|
} else {
|
||||||
SharedLibrary libnetapi.so :
|
SharedLibrary libbnetapi.so :
|
||||||
$(netapi_sources)
|
$(netapi_sources)
|
||||||
: be $(TARGET_NETWORK_LIBS)
|
: be $(TARGET_NETWORK_LIBS)
|
||||||
;
|
;
|
||||||
|
|||||||
@@ -3,9 +3,6 @@
|
|||||||
* Distributed under the terms of the MIT License.
|
* Distributed under the terms of the MIT License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <r5_compatibility.h>
|
|
||||||
|
|
||||||
#include <Message.h>
|
#include <Message.h>
|
||||||
#include <NetEndpoint.h>
|
#include <NetEndpoint.h>
|
||||||
|
|
||||||
@@ -28,7 +25,7 @@ BNetEndpoint::BNetEndpoint(int type)
|
|||||||
fTimeout(B_INFINITE_TIMEOUT),
|
fTimeout(B_INFINITE_TIMEOUT),
|
||||||
fLastError(0)
|
fLastError(0)
|
||||||
{
|
{
|
||||||
if ((fSocket = socket(__gR5Compatibility ? R5_AF_INET : AF_INET, type, 0)) < 0)
|
if ((fSocket = socket(AF_INET, type, 0)) < 0)
|
||||||
fLastError = errno;
|
fLastError = errno;
|
||||||
else
|
else
|
||||||
fInit = B_OK;
|
fInit = B_OK;
|
||||||
|
|||||||
@@ -0,0 +1,41 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2006-2008, Haiku, Inc. All Rights Reserved.
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* Axel Dörfler, [email protected]
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include <image.h>
|
||||||
|
#include <OS.h>
|
||||||
|
|
||||||
|
#include <r5_compatibility.h>
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
find_own_image()
|
||||||
|
{
|
||||||
|
int32 cookie = 0;
|
||||||
|
image_info info;
|
||||||
|
while (get_next_image_info(B_CURRENT_TEAM, &cookie, &info) == B_OK) {
|
||||||
|
if (((uint32)info.text <= (uint32)find_own_image
|
||||||
|
&& (uint32)info.text + (uint32)info.text_size > (uint32)find_own_image)) {
|
||||||
|
// found us
|
||||||
|
__gNetAPIStart = (addr_t)min_c(info.text, info.data);
|
||||||
|
__gNetAPIEnd = min_c((addr_t)info.text + info.text_size,
|
||||||
|
(addr_t)info.data + info.data_size);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
extern "C" void
|
||||||
|
initialize_before()
|
||||||
|
{
|
||||||
|
// If in compatibility mode get our code address range.
|
||||||
|
if (__gR5Compatibility)
|
||||||
|
find_own_image();
|
||||||
|
}
|
||||||
@@ -38,8 +38,12 @@ check_r5_compatibility()
|
|||||||
};
|
};
|
||||||
|
|
||||||
stack_frame* frame = (stack_frame*)get_stack_frame();
|
stack_frame* frame = (stack_frame*)get_stack_frame();
|
||||||
if (frame->return_address >= __gNetworkStart && frame->return_address < __gNetworkEnd)
|
if (frame->return_address >= __gNetworkStart
|
||||||
|
&& frame->return_address < __gNetworkEnd
|
||||||
|
|| frame->return_address >= __gNetAPIStart
|
||||||
|
&& frame->return_address < __gNetAPIEnd) {
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user