+2015-10-26 Arnaud Charlet <charlet@adacore.com>
+
+ * osint-c.ads: Minor comment update.
+
+2015-10-26 Arnaud Charlet <charlet@adacore.com>
+
+ * s-osinte-hpux.ads, s-osinte-aix.ads, s-osinte-solaris-posix.ads,
+ s-osinte-darwin.ads, s-osinte-android.ads, s-osinte-freebsd.ads,
+ s-taprop-posix.adb (Get_Page_Size): C function returns an int. Adjust
+ callers accordingly.
+
2015-10-26 Hristian Kirtchev <kirtchev@adacore.com>
* exp_ch4.adb (Is_OK_Object_Reference): New routine.
procedure Set_File_Name (Ext : String);
-- Sets a default file name from the main compiler source name. Ext is the
-- extension, e.g. "ali" for a library information file. The name is in
- -- Name_Buffer (with length in Name_Len) on return. This is visible in
- -- the spec since it used directly by clients in the .Net case.
+ -- Name_Buffer (with length in Name_Len) on return.
--------------------------------
-- Library Information Output --
-- S p e c --
-- --
-- Copyright (C) 1991-1994, Florida State University --
--- Copyright (C) 1995-2014, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2015, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
-- Returns the stack base of the specified thread. Only call this function
-- when Stack_Base_Available is True.
- function Get_Page_Size return size_t;
- function Get_Page_Size return Address;
+ function Get_Page_Size return int;
pragma Import (C, Get_Page_Size, "getpagesize");
-- Returns the size of a page
return Address is (Null_Address);
-- This is a dummy procedure to share some GNULLI files
- function Get_Page_Size return size_t;
- function Get_Page_Size return Address;
+ function Get_Page_Size return int;
pragma Import (C, Get_Page_Size, "_getpagesize");
-- Returns the size of a page
-- S p e c --
-- --
-- Copyright (C) 1991-1994, Florida State University --
--- Copyright (C) 1995-2014, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2015, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
-- returns the stack base of the specified thread. Only call this function
-- when Stack_Base_Available is True.
- function Get_Page_Size return size_t;
- function Get_Page_Size return System.Address;
+ function Get_Page_Size return int;
pragma Import (C, Get_Page_Size, "getpagesize");
-- Returns the size of a page
-- S p e c --
-- --
-- Copyright (C) 1991-1994, Florida State University --
--- Copyright (C) 1995-2014, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2015, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
-- returns the stack base of the specified thread. Only call this function
-- when Stack_Base_Available is True.
- function Get_Page_Size return size_t;
- function Get_Page_Size return Address;
+ function Get_Page_Size return int;
pragma Import (C, Get_Page_Size, "getpagesize");
-- Returns the size of a page
-- S p e c --
-- --
-- Copyright (C) 1991-1994, Florida State University --
--- Copyright (C) 1995-2014, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2015, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
-- Returns the stack base of the specified thread. Only call this function
-- when Stack_Base_Available is True.
- function Get_Page_Size return size_t;
- function Get_Page_Size return Address;
+ function Get_Page_Size return int;
pragma Import (C, Get_Page_Size, "getpagesize");
-- Returns the size of a page
-- S p e c --
-- --
-- Copyright (C) 1991-1994, Florida State University --
--- Copyright (C) 1995-2014, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2015, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
-- Returns the stack base of the specified thread. Only call this function
-- when Stack_Base_Available is True.
- function Get_Page_Size return size_t;
- function Get_Page_Size return Address;
+ function Get_Page_Size return int;
pragma Import (C, Get_Page_Size, "getpagesize");
-- Returns the size of a page
procedure Stack_Guard (T : ST.Task_Id; On : Boolean) is
Stack_Base : constant Address := Get_Stack_Base (T.Common.LL.Thread);
- Guard_Page_Address : Address;
-
- Res : Interfaces.C.int;
+ Page_Size : Address;
+ Res : Interfaces.C.int;
begin
if Stack_Base_Available then
-- Compute the guard page address
- Guard_Page_Address :=
- Stack_Base - (Stack_Base mod Get_Page_Size) + Get_Page_Size;
-
+ Page_Size := Address (Get_Page_Size);
Res :=
- mprotect (Guard_Page_Address, Get_Page_Size,
- prot => (if On then PROT_ON else PROT_OFF));
+ mprotect
+ (Stack_Base - (Stack_Base mod Page_Size) + Page_Size,
+ size_t (Page_Size),
+ prot => (if On then PROT_ON else PROT_OFF));
pragma Assert (Res = 0);
end if;
end Stack_Guard;
is
Attributes : aliased pthread_attr_t;
Adjusted_Stack_Size : Interfaces.C.size_t;
- Page_Size : constant Interfaces.C.size_t := Get_Page_Size;
+ Page_Size : constant Interfaces.C.size_t :=
+ Interfaces.C.size_t (Get_Page_Size);
Result : Interfaces.C.int;
function Thread_Body_Access is new